package manage_dao

import (
	"manage-server/db"
	"manage-server/model/manage_model"
	"manage-server/util"
)

// 后台用户登录请求结构
type ManageUserLoginReqDao struct {
	Username string `json:"username"` // 必填
	Password string `json:"password"` // 必填
}

// 后台用户登录响应结构
type ManageUserLoginResDao struct {
	ID       uint   `json:"id"`
	Username string `json:"username"`
	Avatar   string `json:"avatar"`
	Nickname string `json:"nickname"`
	Fullname string `json:"fullname"`
	IsSuper  uint   `json:"is_super"`
	RoleId   uint   `json:"role_id"`
}

// 后台用户信息响应结构体
type ManageUserInfoResDao struct {
}

// 后台管理用户新增
type ManageUserAddReqDao struct {
	Username string `json:"username" form:"username"`
	Password string `json:"password" form:"password"`
	Status   uint   `json:"status" form:"status"`
	IsSuper  uint   `json:"is_super" form:"is_super"`
	RoleId   uint   `json:"role_id" form:"role_id"`
}

// 新增用户
func GetUserAdd() bool {
	return true
}

// 查询用户是否存在
func GetUserIsExists(username string) (*manage_model.ManageUser, error) {
	user := manage_model.ManageUser{}
	db := db.GetManageDB()
	if err := db.Model(&manage_model.ManageUser{}).Where("username = ?", username).First(&user).Error; err != nil {
		return nil, err
	}
	return &user, nil
}

// 查询登录用户信息
func GetUserInfo(id string, username string) *manage_model.ManageUser {
	user := manage_model.ManageUser{}
	db := db.GetManageDB()
	db.Model(&user).Where("id = ?", id).Or("username = ?", username).First(&user)
	return &user
}

// 查询用户列表
func GetUserAll(paginator *util.Paginator) ([]manage_model.ManageUser, error) {
	var users []manage_model.ManageUser
	db := db.GetManageDB()
	//分页查询
	err := db.Model(&users).Scopes(paginator.GormPagenation()).Find(&users).Error
	if err != nil {
		return nil, err
	}
	var total int64
	err = db.Model(&users).Count(&total).Error
	if err != nil {
		return nil, err
	}
	paginator.Total = int(total)
	return users, nil
}
